处理日期的好手:pendulum
本文作者:张欣怡,中南财经政法大学统计与数学学院
本文编辑:周一鸣
技术总编:王玉婷
Stata and Python 数据分析
爬虫俱乐部Stata基础课程、Stata进阶课程和Python课程可在小鹅通平台查看,欢迎大家多多支持订阅!如需了解详情,可以通过课程链接(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或课程二维码进行访问哦~在 Python 中,有许多与处理日期相关的库,如 datetime,dateutil 以及 pendulum。其中,pendulum 译为钟摆,是处理日期的好手,可以运用于日期创建、时区及日期转换、日期计算等等。让我们一起来看看 pendulum 的具体用法吧。
首先,我们需要在 Anaconda Prompt 中进行安装:
pip install pendulum
import pendulum
01 日期创建pendulum 中包含多个与日期、时间相关的模块,如 date、time 以及 datetime,可以用于日期的创建。
● 创建 date,主要用于处理年、月、日。
date=pendulum.date(2023,5,3)
print(date)
● 创建 time,主要用于处理时、分、秒。
time=pendulum.time(14,0,30)
print(time)
datetime=pendulum.datetime(2023,5,3,14,0,30)
print(datetime)
此外,还可以用 pendulum.local() 直接创建本地的时区,此时时区默认为上海。
datetime=pendulum.local(2023,5,3,13,40,30)
print(datetime)
print(pendulum.local_timezone())
当然,我们还可以通过 pendulum.now() 及 pendulum.today() 直接获取当前的日期,区别在于 pendulum.now() 可以得到此刻的时分秒,而 pendulum.today() 的时分秒均为0,时区均默认为本地时区。
print(pendulum.now())
print(pendulum.today())
我们同样可以通过 pendulum.yesterday()及pendulum.tomorrow()直接获取昨天及明天的日期。
print(pendulum.yesterday())
print(pendulum.tomorrow())
我们可以根据字符串创建日期,也可以将日期转化为各种字符串形式,最常见的是 datetime、date、time。
print(pendulum.parse("2023-05-25 18:30:00"))
datetime=pendulum.datetime(2023,5,25,18,30,0)
print(datetime.to_datetime_string())
print(datetime.to_date_string())
print(datetime.to_time_string())
02 时区及时期转换
使用 pendulum 库,可以轻易地实现时区的转变。比如,当我们用 datetime() 创建日期时,时区默认为协调世界时 UTC,可以转换为上海时区。
datetime=pendulum.datetime(2023,5,31,14,0,30,tz="Asia/Shanghai")
print(datetime)
我们可以转换为世界各地的时区,只需要在命令中修改 timezone 即可。
datetime=pendulum.datetime(2023,5,31,14,0,30,tz="Europe/Paris")
print(datetime)
当然,如果我们不需要时区,可以将 timezone 修改为 None。
datetime=pendulum.datetime(2023,5,31,14,0,30,tz=None)
print(datetime)
使用 pendulum 库,日期的年、月、日等均可改变。比如,使用 replace() 将年份从2023年转换为2024年;也可以将小时从14时转换为18时。
datetime=pendulum.datetime(2023,5,31,14,0,30)
print(datetime.replace(year=2024))
print(datetime.replace(hour=18))
03 时期计算如果想要得到某个指定日期之前或之后的日期,pendulum 可以轻松地实现。以周为例,使用 add(weeks=1) 就可以得到一星期之后的日期,当 add(weeks=-1) 时就可以得到一星期之前的日期。
datetime=pendulum.datetime(2023,5,26,8,0,0,tz="Asia/Shanghai")
week1=datetime.add(weeks=1)
week2=datetime.add(weeks=-1)
print(week1)
print(week2)
使用 pendulum 库,可以计算指定的日期、时间之差,并可以通过年、月、周、日等表示出来。
datetime1=pendulum.datetime(2023,5,25,8,0,0,tz="Asia/Shanghai")
datetime2=pendulum.datetime(2024,6,26,12,0,0,tz="Asia/Shanghai")
difference=datetime2-datetime1
display(difference.in_years())
display(difference.in_months())
display(difference.in_weeks())
display(difference.in_days())
display(difference.in_hours())
import datetime
datetime1=pendulum.datetime(2023,5,25,8,0,0,tz="Asia/Shanghai")
datetime2=datetime1+datetime.timedelta(hours=28)
display(datetime2)
datetime=pendulum.datetime(2023,7,20,8,0,0,tz="Asia/Shanghai")
print(datetime.day_of_year)
print(datetime.week_of_month)
重磅福利!为了更好地服务各位同学的研究,爬虫俱乐部将在小鹅通平台上持续提供金融研究所需要的各类指标,包括上市公司十大股东、股价崩盘、投资效率、融资约束、企业避税、分析师跟踪、净资产收益率、资产回报率、国际四大审计、托宾Q值、第一大股东持股比例、账面市值比、沪深A股上市公司研究常用控制变量等一系列深加工数据,基于各交易所信息披露的数据利用Stata在实现数据实时更新的同时还将不断上线更多的数据指标。我们以最前沿的数据处理技术、最好的服务质量、最大的诚意望能助力大家的研究工作!相关数据链接,请大家访问:(https://appbqiqpzi66527.h5.xiaoeknow.com/homepage/10)或扫描二维码:
最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐Stata18之dtas——The new in data management
What’ new ? 速通Stata 18
【爬虫实战】Python爬取美食菜谱揭秘网络中心人物,你会是其中之一吗?考研之后,文科生需以“do”躬“do”!焕新升级!轻松获取港股、权证的历史交易数据爬虫俱乐部的精彩答疑---cntraveltime【爬虫俱乐部新命令速递】在Stata中与ChatGPT对话用`fs`命令批量获取文件夹和不同文件夹下的excel文件
自然语言处理之实例应用JSON帮手,FeHelper
最新、最热门的命令这里都有!
Python实现微信自动回复告诉python,我想“狂飙”了——线程池与异步协程为爬虫提速高级函数——map()和reduce()Stata绘制条形图的进阶用法
快来看看武汉的房价是不是又双叒叕涨了!关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:1)必须原创,禁止抄袭;2)必须准确,详细,有例子,有截图;注意事项:1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。2)邮件请注明投稿,邮件名称为“投稿+推文名称”。3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。